import type { ConfigEnv, UserConfig } from 'vite';
// 1.2 define resolve
import { loadEnv } from 'vite';
// 1.1 import path 
import path from 'path';

// 2.1 svg config

import { wrapperEnv } from './build/utils';
import { createProxy } from './build/vite/proxy';

// 2.1 自动导入vue中hook reactive ref等
// resolve
// import { } from 'unplugin-vue-components/resolvers';

import { createVitePlugins } from './build/vite';

import autoprefixer from 'autoprefixer';
import tailwindcss from 'tailwindcss';


// https://vite.dev/config/
// export default defineConfig({
//   plugins: [vue()],
//   resolve: {
//     alias: {
//       "@": resolve(__dirname, "./src"),
//     },
//     extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
//   },
//   server: 
//     port: 9001,
//     host: true,
//     open: true,
//     proxy: {
//       // https://cn.vitejs.dev/config/#server-proxy
//       '/dev-api': {
//         target: 'http://localhost:5001',
//         changeOrigin: true,
//         rewrite: (p) => p.replace(/^\/dev-api/, '')
//       }
//     }
//   },
// })

// function pathResolve(dir: string) {
//   return resolve(process.cwd(), '.', dir);
// }

export default ({ command, mode }: ConfigEnv): UserConfig => {
  const root = process.cwd();

  const env = loadEnv(mode, root);
  console.log('env', env);

  const viteEnv = wrapperEnv(env);

  const { VITE_PORT, VITE_PUBLIC_PATH, VITE_PROXY } = viteEnv;

  const isBuild = command === 'build';

  return {
    base: VITE_PUBLIC_PATH,
    root,
    resolve: 
    {
      alias:{
        '@': path.resolve('./src') // 相对路径配置,使用@代替src
      },
        
      // alias:[
      //   {
      //     find: 'vue-i18n',
      //     replacement: 'vue-i18n/dist/vue-i18n.cjs.js',
      //   },
      //   // /@/xxxx => src/xxxx
      //   {
      //     find: /\/@\//,
      //     replacement: pathResolve('./src') + '/',
      //   },
      //   // /#/xxxx => types/xxxx
      //   {
      //     find: /\/#\//,
      //     replacement: pathResolve('types') + '/',
      //   },
      // ],
       extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],
    },
    server: {
      // Listening on all local IPs
      host: true,
      port: VITE_PORT,
      // Load proxy configuration from .env
      proxy: createProxy(VITE_PROXY),
    },
    // 增加对vue的支持
    // vite 核心配置
    plugins: createVitePlugins(viteEnv, isBuild),
    css: {
      postcss: {
        plugins: [tailwindcss, autoprefixer],
        // plugins: [
        //   tailwindcss({
        //     content: ['./src/**/*.vue']
        //   })
        // ]
      }
    },

  };

}